/*
 * MapeoFormularioActividad.java
 *
 * Created on September 29, 2007, 2:24 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package wasolicitudesfiec.xml;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import wasolicitudesfiec.xml.LectorXML;

/**
 *
 * @author kabad
 */
public class MapeoFormularioActividad {
    
    private Document documento=null;
    
    /** Creates a new instance of MapeoFormularioActividad */
    public MapeoFormularioActividad(String realPath) throws UnsupportedEncodingException {
        InputSource in;
        LectorXML lectorXML;
//        System.out.println("Xml file: "+realPath+"\\mapeoFormularioActividad.xml");
//        in = new InputSource(realPath+"mapeoFormularioActividad.xml");
        String rutaSinEspacios=(realPath+"\\mapeoFormularioActividad.xml").replaceAll(" ","%20");
        in = new InputSource(rutaSinEspacios);
        lectorXML=new LectorXML();
        try {
            documento=lectorXML.leerXML(in);
        } catch (SAXException ex) {
            ex.printStackTrace();
        } catch (ParserConfigurationException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
    public String getFormulario(String nombreModeloProceso,String nombreActividad){
        Element elemActividad;
        Element elemModeloProceso;
        if(documento!=null){
            elemModeloProceso=leerModeloProceso(nombreModeloProceso);
            if(elemModeloProceso!=null){
                elemActividad=leerActividad(elemModeloProceso,nombreActividad);
                System.out.println("mapeoform elemactividad "+elemActividad.getAttribute("nombre"));
                if(elemActividad!=null)
                {
                    return getFormularioJSF(elemActividad);
                }
            }
        }
        return null;
    }
    private Element leerModeloProceso(String nombreModeloProceso){
        Node nodo;
        NodeList listaNodosModelosProcesos;
        listaNodosModelosProcesos=documento.getElementsByTagName("modelo-proceso");
        for (int i = 0; i < listaNodosModelosProcesos.getLength(); i++) {
            nodo=listaNodosModelosProcesos.item(i);
            if(nodo.getNodeType()==nodo.ELEMENT_NODE){
                Element elemento=(Element)nodo;
                if(elemento.getAttribute("nombre").equalsIgnoreCase(nombreModeloProceso)){
                    return elemento;
                }
            }
        }
        return null;
    }
    
    private Element leerActividad(Element elemModeloProceso, String nombreActividad) {
        Node nodo;
        NodeList listaNodosActividad;
        listaNodosActividad=elemModeloProceso.getElementsByTagName("actividad");
        for (int i = 0; i < listaNodosActividad.getLength(); i++) {
            nodo=listaNodosActividad.item(i);
            if(nodo.getNodeType()==nodo.ELEMENT_NODE){
                Element elemento=(Element)nodo;
                if(elemento.getAttribute("nombre").equalsIgnoreCase(nombreActividad)){
                    return elemento;
                }
            }
        }
        return null;
    }
    
    private String getFormularioJSF(Element elemActividad){
        NodeList listaFormularioJSF;
        listaFormularioJSF=elemActividad.getElementsByTagName("formulariojsf");
        System.out.println("forms "+listaFormularioJSF.item(0).getFirstChild().getNodeValue());
        if (listaFormularioJSF.getLength()>0)
            return listaFormularioJSF.item(0).getFirstChild().getNodeValue();
        return null;
    }
}
